package com.yunxi.finance.service;

import com.github.pagehelper.PageInfo;
import com.yunxi.core.web.ApiResult;
import com.yunxi.core.web.LoginInfo;
import com.yunxi.finance.pojo.FinanceInstitutionVO;
import com.yunxi.finance.pojo.FinanceProductCalculateVO;
import com.yunxi.finance.pojo.FinanceProductVO;
import java.util.List;

/**
 * <p>
 * 金融产品维护 服务类
 * </p>
 *
 * @author XUQI
 * @since 2019-12-02
 */
public interface FinanceProductDubboService {

    /**
     * 根据ID查询单个金融产品对象
     * @param id 金融产品id
     * @return FinanceProductVO
     */
    FinanceProductVO getById(String id);

    /**
     * 金融产品保存方法
     * @param financeProductVO 金融产品VO
     */
    ApiResult saveOrUpdate(FinanceProductVO financeProductVO);

    /**
     * 根据ID删除金融产品
     * @param ids ids
     */
    void removeByIds(List<String> ids);

    /**
     *  分页查询
     * @param financeProductVO 查询条件
     * @param pageNum 页数
     * @param pageSize 行数
     * @return 分页对象
     */
    PageInfo findPageByVO(FinanceProductVO financeProductVO, Integer pageNum, Integer pageSize);

    /**
     * 查询金融机构下拉框
     * @return List<FinanceInstitutionVO>
     */
    List<FinanceInstitutionVO> findFinanceInstitutionDropDown();


    /**
     * 根据方案类型查询金融产品
     * @param planType 方案类型
     * @return List<FinanceProductVO>
     */
    List<FinanceProductVO> productListByPlanType(String planType ,LoginInfo info);

    /**
     * 金融产品结果计算
     * @return
     */
    ApiResult calculate(FinanceProductCalculateVO calculateVO);


    /**
     * 查询配置/选装包价格
     * @param priceType 价格类型（ZVAR：选装包价格-零售指导价  ZPRR：零售价格 – 基本车型）
     * @param codes 15位码/选装包编码
     * @return ApiResult
     */
    ApiResult queryPrice(String priceType, List<String> codes);


}
